#pragma once

// defines ------------------------------------------------------------------------------------------------------------

#define SWITCH_HASH_FIELD_IN_PORT           "IN_PORT"
#define SWITCH_HASH_FIELD_DST_MAC           "DST_MAC"
#define SWITCH_HASH_FIELD_SRC_MAC           "SRC_MAC"
#define SWITCH_HASH_FIELD_ETHERTYPE         "ETHERTYPE"
#define SWITCH_HASH_FIELD_VLAN_ID           "VLAN_ID"
#define SWITCH_HASH_FIELD_IP_PROTOCOL       "IP_PROTOCOL"
#define SWITCH_HASH_FIELD_DST_IP            "DST_IP"
#define SWITCH_HASH_FIELD_SRC_IP            "SRC_IP"
#define SWITCH_HASH_FIELD_L4_DST_PORT       "L4_DST_PORT"
#define SWITCH_HASH_FIELD_L4_SRC_PORT       "L4_SRC_PORT"
#define SWITCH_HASH_FIELD_INNER_DST_MAC     "INNER_DST_MAC"
#define SWITCH_HASH_FIELD_INNER_SRC_MAC     "INNER_SRC_MAC"
#define SWITCH_HASH_FIELD_INNER_ETHERTYPE   "INNER_ETHERTYPE"
#define SWITCH_HASH_FIELD_INNER_IP_PROTOCOL "INNER_IP_PROTOCOL"
#define SWITCH_HASH_FIELD_INNER_DST_IP      "INNER_DST_IP"
#define SWITCH_HASH_FIELD_INNER_SRC_IP      "INNER_SRC_IP"
#define SWITCH_HASH_FIELD_INNER_L4_DST_PORT "INNER_L4_DST_PORT"
#define SWITCH_HASH_FIELD_INNER_L4_SRC_PORT "INNER_L4_SRC_PORT"
#define SWITCH_HASH_FIELD_IPV6_FLOW_LABEL   "IPV6_FLOW_LABEL"

#define SWITCH_HASH_ECMP_HASH "ecmp_hash"
#define SWITCH_HASH_LAG_HASH  "lag_hash"

#define SWITCH_HASH_ALGORITHM_CRC       "CRC"
#define SWITCH_HASH_ALGORITHM_XOR       "XOR"
#define SWITCH_HASH_ALGORITHM_RANDOM    "RANDOM"
#define SWITCH_HASH_ALGORITHM_CRC_32LO  "CRC_32LO"
#define SWITCH_HASH_ALGORITHM_CRC_32HI  "CRC_32HI"
#define SWITCH_HASH_ALGORITHM_CRC_CCITT "CRC_CCITT"
#define SWITCH_HASH_ALGORITHM_CRC_XOR   "CRC_XOR"

#define SWITCH_HASH_ECMP_HASH_ALGORITHM "ecmp_hash_algorithm"
#define SWITCH_HASH_LAG_HASH_ALGORITHM  "lag_hash_algorithm"
